// 胶水管理系统 - 主要JavaScript文件

// 全局变量
let currentUser = null;
let systemConfig = {};

// 系统初始化
function initSystem() {
    console.log('胶水管理系统初始化中...');
    
    // 设置当前用户（这里可以从登录系统获取）
    currentUser = {
        id: 'USER001',
        name: '操作员',
        role: 'operator',
        department: '生产部'
    };
    
    // 加载系统配置
    loadSystemConfig();
    
    // 初始化页面功能
    initPageFunctions();
    
    console.log('系统初始化完成');
}

// 加载系统配置
function loadSystemConfig() {
    // 这里可以从服务器加载系统配置
    systemConfig = {
        companyName: '光纤组件制造有限公司',
        systemVersion: '1.0.0',
        maxGlueQuantity: 100,
        warningMinutes: 60, // 1小时警告
        criticalMinutes: 30 // 30分钟紧急
    };
}

// 初始化页面功能
function initPageFunctions() {
    // 设置当前页面导航状态
    setCurrentPageNav();
    
    // 初始化表格排序功能
    initTableSorting();
    
    // 初始化筛选器功能
    initFilters();
}

// 设置当前页面导航状态
function setCurrentPageNav() {
    const currentPath = window.location.pathname;
    const navItems = document.querySelectorAll('.nav-item');
    
    navItems.forEach(item => {
        item.classList.remove('active');
        if (item.getAttribute('href') === currentPath.split('/').pop()) {
            item.classList.add('active');
        }
    });
}

// 初始化表格排序功能
function initTableSorting() {
    const tables = document.querySelectorAll('table');
    
    tables.forEach(table => {
        const headers = table.querySelectorAll('th');
        
        headers.forEach((header, index) => {
            if (header.textContent.trim() !== '操作') {
                header.style.cursor = 'pointer';
                header.addEventListener('click', () => {
                    sortTable(table, index);
                });
                
                // 添加排序指示器
                header.innerHTML += ' <i class="fas fa-sort" style="color: #ccc; margin-left: 5px;"></i>';
            }
        });
    });
}

// 表格排序功能
function sortTable(table, columnIndex) {
    const tbody = table.querySelector('tbody');
    const rows = Array.from(tbody.querySelectorAll('tr'));
    const header = table.querySelector(`th:nth-child(${columnIndex + 1})`);
    const isAscending = header.classList.contains('sort-asc');
    
    // 清除所有排序状态
    table.querySelectorAll('th').forEach(th => {
        th.classList.remove('sort-asc', 'sort-desc');
        th.innerHTML = th.innerHTML.replace(/<i class="fas fa-sort-[^"]*"><\/i>/, ' <i class="fas fa-sort" style="color: #ccc; margin-left: 5px;"></i>');
    });
    
    // 设置排序方向
    if (isAscending) {
        header.classList.add('sort-desc');
        header.innerHTML = header.innerHTML.replace(/<i class="fas fa-sort[^"]*"><\/i>/, ' <i class="fas fa-sort-down" style="color: #1976d2; margin-left: 5px;"></i>');
        rows.reverse();
    } else {
        header.classList.add('sort-asc');
        header.innerHTML = header.innerHTML.replace(/<i class="fas fa-sort[^"]*"><\/i>/, ' <i class="fas fa-sort-up" style="color: #1976d2; margin-left: 5px;"></i>');
        
        // 排序行
        rows.sort((a, b) => {
            const aValue = a.cells[columnIndex].textContent.trim();
            const bValue = b.cells[columnIndex].textContent.trim();
            
            // 尝试数字排序
            const aNum = parseFloat(aValue);
            const bNum = parseFloat(bValue);
            
            if (!isNaN(aNum) && !isNaN(bNum)) {
                return aNum - bNum;
            }
            
            // 字符串排序
            return aValue.localeCompare(bValue, 'zh-CN');
        });
    }
    
    // 重新插入排序后的行
    rows.forEach(row => tbody.appendChild(row));
}

// 初始化筛选器功能
function initFilters() {
    const filters = document.querySelectorAll('.filter-container select');
    
    filters.forEach(filter => {
        filter.addEventListener('change', function() {
            applyFilters();
        });
    });
}

// 应用筛选器
function applyFilters() {
    console.log('应用筛选器...');
    // 这里可以添加实际的筛选逻辑
    // 例如：隐藏/显示表格行，或者发送AJAX请求获取筛选后的数据
}

// 显示通知消息
function showNotification(message, type = 'info') {
    // 创建通知元素
    const notification = document.createElement('div');
    notification.className = `notification notification-${type}`;
    notification.innerHTML = `
        <i class="fas fa-${type === 'success' ? 'check-circle' : type === 'error' ? 'exclamation-circle' : 'info-circle'}"></i>
        <span>${message}</span>
        <button onclick="this.parentElement.remove()">
            <i class="fas fa-times"></i>
        </button>
    `;
    
    // 添加样式
    notification.style.cssText = `
        position: fixed;
        top: 20px;
        right: 20px;
        background: white;
        border-radius: 8px;
        padding: 16px 20px;
        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
        border-left: 4px solid ${type === 'success' ? '#28a745' : type === 'error' ? '#dc3545' : '#17a2b8'};
        display: flex;
        align-items: center;
        gap: 12px;
        z-index: 10000;
        max-width: 400px;
        animation: slideIn 0.3s ease;
    `;
    
    // 添加到页面
    document.body.appendChild(notification);
    
    // 自动移除
    setTimeout(() => {
        if (notification.parentElement) {
            notification.remove();
        }
    }, 5000);
}

// 确认对话框
function showConfirmDialog(message, callback) {
    if (confirm(message)) {
        if (typeof callback === 'function') {
            callback();
        }
    }
}

// 格式化日期
function formatDate(date, format = 'YYYY-MM-DD') {
    const d = new Date(date);
    const year = d.getFullYear();
    const month = String(d.getMonth() + 1).padStart(2, '0');
    const day = String(d.getDate()).padStart(2, '0');
    const hours = String(d.getHours()).padStart(2, '0');
    const minutes = String(d.getMinutes()).padStart(2, '0');
    
    return format
        .replace('YYYY', year)
        .replace('MM', month)
        .replace('DD', day)
        .replace('HH', hours)
        .replace('mm', minutes);
}

// 计算剩余时间（分钟）
function calculateRemainingMinutes(expiryDate) {
    const now = new Date();
    const expiry = new Date(expiryDate);
    const diffTime = expiry - now;
    const diffMinutes = Math.ceil(diffTime / (1000 * 60));
    
    return diffMinutes;
}

// 计算剩余天数（兼容旧版本）
function calculateRemainingDays(expiryDate) {
    const diffMinutes = calculateRemainingMinutes(expiryDate);
    return Math.ceil(diffMinutes / (24 * 60));
}

// 获取状态标签样式
function getStatusBadgeClass(status, minutes = null) {
    if (minutes !== null) {
        if (minutes < 0) return 'status-expired';
        if (minutes <= systemConfig.criticalMinutes) return 'status-expired'; // 紧急时间
        if (minutes <= systemConfig.warningMinutes) return 'status-pending'; // 警告时间
        return 'status-normal';
    }
    
    switch (status) {
        case 'pending':
        case '待配送':
        case '待生产':
            return 'status-pending';
        case 'delivered':
        case '已配送':
        case '生产完成':
            return 'status-delivered';
        case 'normal':
        case '正常':
            return 'status-normal';
        case 'expired':
        case '超时':
        case '已过期':
            return 'status-expired';
        default:
            return 'status-normal';
    }
}

// 导出数据
function exportData(tableId, filename = 'export.csv') {
    const table = document.getElementById(tableId);
    if (!table) return;
    
    const rows = Array.from(table.querySelectorAll('tr'));
    let csv = [];
    
    rows.forEach(row => {
        const cols = Array.from(row.querySelectorAll('td, th'));
        const rowData = cols.map(col => {
            // 移除HTML标签，只保留文本
            return col.textContent.replace(/"/g, '""');
        });
        csv.push(rowData.join(','));
    });
    
    const csvContent = csv.join('\n');
    const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
    const link = document.createElement('a');
    
    if (link.download !== undefined) {
        const url = URL.createObjectURL(blob);
        link.setAttribute('href', url);
        link.setAttribute('download', filename);
        link.style.visibility = 'hidden';
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    }
}

// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', function() {
    initSystem();
});

// 添加CSS动画
const style = document.createElement('style');
style.textContent = `
    @keyframes slideIn {
        from {
            transform: translateX(100%);
            opacity: 0;
        }
        to {
            transform: translateX(0);
            opacity: 1;
        }
    }
    
    .notification button {
        background: none;
        border: none;
        color: #666;
        cursor: pointer;
        padding: 0;
        margin-left: auto;
    }
    
    .notification button:hover {
        color: #333;
    }
`;
document.head.appendChild(style);
